package com.ufcg.lvc.client.prototipacao;

import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;
import com.ufcg.lvc.client.GreetingServiceCRUD;
import com.ufcg.lvc.client.GreetingServiceCRUDAsync;
import com.ufcg.lvc.client.UserData;

public class ExibirTurma {

	AbsolutePanel panelExibirTurma;
	String nome_, disciplina_,instituicao_,ano_;
	UserData UD;
	
	public ExibirTurma(String nome, String disciplina, String instituicao, String ano, UserData uD) {
		UD = uD;
		this.nome_ = nome;
		this.disciplina_ = disciplina;
		this.instituicao_ = instituicao;
		this.ano_ = ano;
		
		panelExibirTurma = new AbsolutePanel();
		panelExibirTurma.setSize("900px", "707px");

		final ListBox alunosLB = new ListBox();
		panelExibirTurma.add(alunosLB, 60, 181);
		alunosLB.setSize("780px", "153px");
		alunosLB.setVisibleItemCount(10);
		
		Label titulo = new Label("Minha turma");
		titulo.setStyleName("gwt-TituloMedio");
		panelExibirTurma.add(titulo, 0, 10);

		com.google.gwt.user.client.ui.Button btnAddRemoverAluno = new com.google.gwt.user.client.ui.Button("Adicionar/Excluir alunos");
//		panelExibirTurma.add(btnAddRemoverAluno, 538, 340);
		panelExibirTurma.add(btnAddRemoverAluno, 672, 340);
		btnAddRemoverAluno.setSize("168px", "29px");

//		Button btnExibirNotas = new Button("Exibir notas");
//		panelExibirTurma.add(btnExibirNotas, 712, 340);
//		btnExibirNotas.setSize("118px", "29px");
		
		final ListBox provasLB = new ListBox();
		panelExibirTurma.add(provasLB, 60, 401);
		provasLB.setSize("780px", "141px");
		provasLB.setVisibleItemCount(10);
		
		com.google.gwt.user.client.ui.Button btnVoltar = new com.google.gwt.user.client.ui.Button("Voltar");
		panelExibirTurma.add(btnVoltar, 402, 618);
		btnVoltar.setSize("91px", "29px");
		
		Label label_3 = new Label("Alunos:");
		panelExibirTurma.add(label_3, 60, 158);
		label_3.setSize("80px", "17px");
		
		Label label_4 = new Label("Ano:");
		panelExibirTurma.add(label_4, 427, 131);
		label_4.setSize("61px", "17px");
		
		getServicoCRUD().getAlunosDaTurma(nome, UD.getId_usuario(), new AsyncCallback<List<String>>() {
			@Override
			public void onSuccess(List<String> result) {
				for (String umAluno : result) {
					alunosLB.addItem(umAluno);	
				}
			}
			@Override
			public void onFailure(Throwable caught) {
				System.out.println("Erro na comunicação com o servidor");
			}
		});
		
		getServicoCRUD().getProvas(nome_, UD.getId_usuario(), new AsyncCallback<List<String>>() {
			@Override
			public void onSuccess(List<String> result) {
				for (String umaProva : result) {
					provasLB.addItem(umaProva);	
				}
			}
			@Override
			public void onFailure(Throwable caught) {
				System.out.println("Erro na comunicação com o servidor");
			}
		});
							
//		Button btnExibirNotas = new Button("Exibir notas");
//		panelQuestoes.add(btnExibirNotas, 472, 390);
//		btnExibirNotas.setSize("118px", "29px");
		
		Label lblProvas = new Label("Provas:");
		panelExibirTurma.add(lblProvas, 60, 379);
		
		Label label = new Label("Nome:");
		panelExibirTurma.add(label, 60, 69);
		label.setSize("43px", "17px");
		
		Label label_1 = new Label("Instituição:");
		panelExibirTurma.add(label_1, 60, 100);
		label_1.setSize("85px", "17px");
		
		Label label_2 = new Label("Disciplina:");
		label_2.setDirectionEstimator(true);
		panelExibirTurma.add(label_2, 60, 131);
		label_2.setSize("75px", "17px");
		
		TextBox nomeTB = new TextBox();
		nomeTB.setText(nome);
		nomeTB.setEnabled(false);
		panelExibirTurma.add(nomeTB, 158, 69);
		nomeTB.setSize("422px", "14px");
		
		TextBox instituicaoTB = new TextBox();
		instituicaoTB.setText(instituicao_);
		instituicaoTB.setEnabled(false);
		panelExibirTurma.add(instituicaoTB, 158, 100);
		instituicaoTB.setSize("422px", "14px");
		
		TextBox disciplinaTB = new TextBox();
		disciplinaTB.setText(disciplina_);
		disciplinaTB.setEnabled(false);
		panelExibirTurma.add(disciplinaTB, 158, 131);
		disciplinaTB.setSize("231px", "14px");
		
		TextBox anoTB = new TextBox();
		panelExibirTurma.add(anoTB, 474, 131);
		anoTB.setText(ano);
		anoTB.setEnabled(false);
		anoTB.setSize("106px", "14px");
		
		Button btnCorrigirProvas = new Button("Corrigir prova");
		panelExibirTurma.add(btnCorrigirProvas, 472, 548);
		btnCorrigirProvas.setSize("118px", "29px");
		
//		Button btnImprimir = new Button("Imprimir");
//		panelExibirTurma.add(btnImprimir, 348, 607);
//		btnImprimir.setSize("118px", "29px");
		
		Button btnExcluirProva = new Button("Excluir prova");
		panelExibirTurma.add(btnExcluirProva, 722, 548);
		btnExcluirProva.setSize("118px", "29px");
		
		Button btnAddProva = new Button("Adicionar prova");
		panelExibirTurma.add(btnAddProva, 598, 548);
		btnAddProva.setSize("118px", "29px");
		
//		btnExibirNotas.addClickHandler(new ClickHandler() {
//			@Override
//			public void onClick(ClickEvent event) {
//				
//				panelExibirTurma.clear();
//				ExibirNotasAluno e = new ExibirNotasAluno(alunosLB.getItemText(alunosLB.getSelectedIndex()));
//				panelExibirTurma.add(e.getPanel());
//			}
//		});
		
		btnAddRemoverAluno.addClickHandler(new ClickHandler() {
			@Override
			public void onClick(ClickEvent event) {
				panelExibirTurma.clear();
				final NovaTurma n = new NovaTurma(nome_,disciplina_,instituicao_,ano_,true, UD);
				panelExibirTurma.add(n.getPanel());
			}
		});
		
		btnVoltar.addClickHandler(new ClickHandler() {	
			@Override
			public void onClick(ClickEvent event) {
				panelExibirTurma.clear();
				final MinhasTurmas n = new MinhasTurmas(UD);
				panelExibirTurma.add(n.getPanel());	
			}
		});
		
		btnAddProva.addClickHandler(new ClickHandler() {	
			@Override
			public void onClick(ClickEvent event) {
				panelExibirTurma.clear();
				final NovaProva n = new NovaProva(nome_,disciplina_, instituicao_, ano_, UD);
				panelExibirTurma.add(n.getPanel());	
			}
		});
		
		btnCorrigirProvas.addClickHandler(new ClickHandler() {	
			@Override
			public void onClick(ClickEvent event) {
				try {
					CarregarImagem c = new CarregarImagem(nome_, disciplina_, instituicao_, ano_, provasLB.getItemText(provasLB.getSelectedIndex()), UD);
					panelExibirTurma.clear();
					panelExibirTurma.add(c.getPanel());	
				} catch (Exception e) {
					Window.alert("Selecione a prova que deseja corrigir.");
				}
			}
		});
		
	}

	public AbsolutePanel getPanel() {
		return panelExibirTurma;
	}
	
	public static GreetingServiceCRUDAsync getServicoCRUD() {
		return GWT.create(GreetingServiceCRUD.class);
	}
}
